package com.javatest2;

/**
 * @author LL
 * 给定两个正整数X和Y，以及正整数数组nums。
 * 我们需要找到一个最大的index，使得在nums[0],
 * nums[1], .... , nums[index]中，出现X、Y的次数相等，且
 * 至少均出现一次，返回该index。
 * 若不存在这样的index，则返回-1。
 * 说明
 * ✪ nums 的数组长度范围是: [0, 1000000]
 * ✪ nums[i], X 以及 Y 的整数范围是: [1, 1000000]
 * 示例
 * 示例 1:
 * 输入:
 * X = 2
 * Y = 4
 * nums: [1, 2, 3, 4, 4, 3]
 * 2021/2/1 题目
 * https://share.jiuzhang.com/problem?id=1823 2/2
 * 输出: 3
 * 解释: 保证 2 和 4 出现相同次数的最长前缀是： {1,
 * 2, 3, 4}，所以你应该返回3。
 * 示例 2：
 * 输入：
 * X = 7
 * Y = 42
 * nums = [7、42、5、6、42、8、7、5、3、6、7]
 * 输出：9
 * 解释：保证7和42出现相同次数的最长前缀是：{7, 42, 5,
 * 6, 42, 8, 7, 5, 3, 6}，所以你应该返回9。
 * 示例 3:
 * 输入:
 * X = 1
 * Y = 10
 * nums: [2, 3, 1]
 * 输出：-1
 * 解释：不存在前缀使得 1 和 10 都出现且出现次数相同的
 * 情况
 * @create 2021-02-01 13:34
 */
public class Subject11 {

    public static int test(final int x, final int y, final int[] n) {
        if (n.length == 0) {
            return -1;
        }
        int xCount = 0, yCount = 0, result = -1;
        for (int i = 0; i < n.length; i++) {
            if (x == n[i]) {
                xCount++;
            }
            if (y == n[i]) {
                yCount++;
            }
            if (xCount != 0 && xCount == yCount) {
                result = i;
            }
        }
        for (int i = 0; i <= result; i++) {
            System.out.print(n[i] + ",");
        }
        System.out.println();
        return result;
    }

    public static void main(final String[] args) {
        final int[] n = {1, 2, 3, 4, 5, 1, 2, 6, 7, 3, 1};
        final int test = test(1, 2, n);
        System.out.println(test);
    }

}
